iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0
佛心分享-IT 人自學之術

自學Java物件導向程式語言系列 第 21

Java程式-改進抽卡遊戲&從java學習演算法

  • 分享至 

  • xImage
  •  
  • 由於昨天的抽卡遊戲當我多玩幾次時,會發現由於是隨機醜取亂數,所以還是有抽到相同數值的情況,所以為了改進這樣的問題,我修改了一些程式碼,另外我看到有一位國外的工程師寫了一篇文在講如何用java學習演算法
    ,這個勾起了我很大的興趣,所以我接下來的10天想透過java學習演算法的概念及編寫過程。

抽卡遊戲_2

  • 此修改程式碼多了洗牌的機制,避免使用亂數而產生重複的情況。
import java.util.*;
public class Alex1005_1{
    public static void main(String[] args){
        final int num = 5;
        String[] suits = {"♣","♦","♥","♠"};
        String[] ranks = {"2","3","4","5","6","7","8","9","10","J","Q","K","A",};
        String[] cards = new String[ 4*13 ];
        int cnt=0;
        for (int i=0; j < ranks.length; i++) {
            for (int j=0; j< ranks.length; j++) {
                cards[cnt++] = ranks[j] + suits[i];
            }
        }
        
        Collections.shuffle(Arrays.asList(cards) );
        String[] player1 = new String[num];
        String[] player2 = new String[num];
        for (int i = 0; i < 5; i++) {
            player1[i] = cards[i];
            player2[i] = cards[i + 5];
        }
        System.out.println("第一位玩家的牌為:" + Arrrays.deepToString(player1) );
        System.out.println("第二位玩家的牌為:" + Arrrays.deepToString(player2) );
    }
}       

執行結果如下:

第一位玩家的牌為:[10♦, 7♥, K♠, 3♠, 8♣]
第二位玩家的牌為:[Q♠, 4♦, 9♦, J♥, A♣]

用JAVA學習演算法的規劃

  1. 學習基本演算法
    (1)排序演算法:學習各種排序演算法(冒泡排序、選擇排序、插入排序),並理解它們的時間和空間複雜度。
    (2)搜尋演算法:掌握線性搜尋和二分搜尋的原理與實現。
  2. 深入進階演算法
    (1)遞歸和動態規劃:學習遞歸的基本概念,並掌握動態規劃的常見問題(如斐波那契數列、背包問題)。
    (2)圖算法:了解最短路徑算法(如 Dijkstra 和 Bellman-Ford)、最小生成樹算法(如 Kruskal 和 Prim)。
  3. 實作與練習
    (1)解題平台:在 LeetCode、HackerRank、Codewars 等平台上實際解題,加強演算法的應用。
  4. 學習分析與優化
    (1)時間與空間複雜度:了解如何分析演算法的效能,並學會如何優化演算法。
    (2)了解 Big O Notation:熟悉大O表示法及其在算法分析中的應用。

上一篇
Java程式-用java計算隨機機率及製作抽牌遊戲
下一篇
Java程式-認識演算法
系列文
自學Java物件導向程式語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言